package presistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import conexao.Conexao;
import conexao.ConfiguracoesBd;

public class GeradorId 
{
	private static String SQL_PROPRIETARIO = "SELECT MAX(idProprietario) AS id FROM Proprietario";
	private static String SQL_PROCEDENCIA = "SELECT MAX(idProcedencia) AS id FROM ListaProcedencia";
	private static String SQL_EXPOSICAO = "SELECT MAX(idExposicao) AS id FROM Exposicao";
	private static String SQL_CATEGORIA = "SELECT MAX(idListaCategoria) AS id FROM ListaCategoria";
	private static String SQL_ENDERECO = "SELECT MAX(idEndereco) AS id FROM Endereco";
	private static String SQL_USUARIO = "SELECT MAX(idColaborador) AS id FROM Usuario";
	private static String SQL_ESTILO = "SELECT MAX(idListaEstilo) AS id FROM ListaEstilo";
	private static String SQL_AUTOR = "SELECT MAX(idListaAutor) AS id FROM ListaAutor";
	private static String SQL_OBRAS = "SELECT MAX(IdObra) AS id FROM Obras";

	public GeradorId() 
	{
		
	}
	
	//----------------------------------------------------------------------------------------------------
	//-- Obras
	//----------------------------------------------------------------------------------------------------
	public int gerarId(String sql)
    {
		int proxId = 0;
		Conexao con = new Conexao(ConfiguracoesBd.LOGIN, ConfiguracoesBd.SENHA,ConfiguracoesBd.DRIVER, ConfiguracoesBd.URL);
		try 
        {
            con.conectar();            
            PreparedStatement ps = con.getStatement(sql);            
            ResultSet rs = ps.executeQuery();
            rs.next();
            proxId = rs.getInt("id");
        }    
        catch (SQLException e) 
        {
            JOptionPane.showMessageDialog(null, "Erro ao tentar obter o id no banco."+'\n'+e.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
        } 
        finally 
        {
            con.desconectar();
        }
        
        return proxId + 1; 
    }
	//----------------------------------------------------------------------------------------------------
	//-- GETS
	//----------------------------------------------------------------------------------------------------
	public int getProximoIdObra()
    {
		return gerarId(SQL_OBRAS);
    }
	
	public int getProximoIdExposicao()
    {
		return gerarId(SQL_EXPOSICAO);
    }

	public int getProximoIdProprietario()
    {
		return gerarId(SQL_PROPRIETARIO);
    }

	public int getProximoIdUsuario()
    {
		return gerarId(SQL_USUARIO);
    }

	public int getProximoIdEndereco()
    {
		return gerarId(SQL_ENDERECO);
    }

	public int getProximoIdAutor()
    {
		return gerarId(SQL_AUTOR);
    }

	public int getProximoIdCategoria()
    {
		return gerarId(SQL_CATEGORIA);
    }

	public int getProximoIdEstilo()
    {
		return gerarId(SQL_ESTILO);
    }

	public int getProximoIdProcedencia()
    {
		return gerarId(SQL_PROCEDENCIA); 
    }
	
	public int getProximoIdLista(String lista)
    {
		return gerarId("SELECT MAX(idLista"+ lista +") AS id FROM Lista" + lista); 
    }

}
